<ui:composition xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.prime.com.tr/ui"
	template="./templates/main.xhtml">

	<ui:define name="title">
		Facturas
	</ui:define>

	<ui:define name="content">

		<f:metadata>
			<f:event type="preRenderView" listener="#{altaFacturaBean.loadBean}" />
		</f:metadata>

		<h:form prependId="false">

			<p:panel header="Formulario de alta">

				<h:panelGrid columns="2" columnClasses="grid2ColumnsBottom">

					<h:panelGrid columns="4" cellpadding="4"
						styleClass="ui-widget-content" columnClasses="label, value">

						<h:outputText value="Porveedor:" />
						<h:inputText value="#{altaFacturaBean.nuevaFactura.proveedor}"
							readonly="true" />

						<h:outputText value="#{msg['label.codigo']}:" />
						<h:inputText value="#{altaFacturaBean.nuevaFactura.codigo}"
							maxlength="15" />

						<h:outputText value="#{msg['label.periodoFacturacionDesde']}:" />
						<p:calendar value="#{altaFacturaBean.nuevaFactura.fechaDesde}"
							pages="3" locale="es" pattern="dd/MM/yyyy"
							readOnlyInputText="false" showOn="button" />

						<h:outputText value="#{msg['label.hasta']}:" />
						<p:calendar value="#{altaFacturaBean.nuevaFactura.fechaHasta}"
							pages="3" locale="es" pattern="dd/MM/yyyy" showOn="button" />

					</h:panelGrid>

				</h:panelGrid>

				<p:spacer height="10" />

				<p:dataTable id="lineas"
					value="#{altaFacturaBean.nuevaFactura.lineas}" var="linea"
					rowEditListener="#{altaFacturaBean.rowEditLineaFacturaListener}"
					onRowEditUpdate="growl lineas"
					emptyMessage="#{msg['label.sinLineas']}">

					<f:facet name="header">
						<p:commandButton image="nuevo" type="button"
							value="#{msg['label.nuevaLinea']}"
							onclick="dlgAltaLineaFactura.show()" />
					</f:facet>

					<p:column sortBy="#{linea.lineaTelefonica.numero}"
						style="text-align:center">
						<f:facet name="header">
							<h:outputText value="#{msg['label.numeroLinea']}" />
						</f:facet>
						<h:outputText value="#{linea.lineaTelefonica.numero}" />
					</p:column>

					<p:column sortBy="#{linea.lineaTelefonica.titular.presentacion}">
						<f:facet name="header">
							<h:outputText value="#{msg['label.titular']}" />
						</f:facet>
						<h:outputText
							value="#{linea.lineaTelefonica.titular.presentacion}" />
					</p:column>

					<p:column sortBy="#{linea.lineaTelefonica.extension}"
						style="text-align:center">
						<f:facet name="header">
							<h:outputText value="#{msg['label.extension']}" />
						</f:facet>
						<h:outputText value="#{linea.lineaTelefonica.extension}" />
					</p:column>

					<p:column sortBy="#{linea.importeConsumido}"
						style="text-align:center"
						headerText="#{msg['label.totalConsumido']}">

						<p:cellEditor>
							<f:facet name="output">
								<h:outputText value="#{linea.importeConsumido}"
									converter="javax.faces.Double" />
							</f:facet>
							<f:facet name="input">
								<h:inputText value="#{linea.importeConsumido}"
									converter="javax.faces.Double" />
							</f:facet>
						</p:cellEditor>

					</p:column>

					<p:column sortBy="#{linea.puntosAcumulados}"
						style="text-align:center">
						<f:facet name="header">
							<h:outputText value="Puntos acumulados" />
						</f:facet>
						<h:outputText value="#{linea.puntosAcumulados}"
							converter="javax.faces.Integer" />
					</p:column>

					<p:column sortBy="#{linea.importeIva}" style="text-align:center">
						<f:facet name="header">
							<h:outputText value="IVA" />
						</f:facet>
						<h:outputText value="#{linea.importeIva}" />
					</p:column>

					<p:column sortBy="#{linea.importeTotal}" style="text-align:center">
						<f:facet name="header">
							<h:outputText value="Total" />
						</f:facet>
						<h:outputText value="#{linea.importeTotal}"
							converter="javax.faces.Double" />
					</p:column>

					<p:column>
						<f:facet name="header">
							<h:outputText value="" />
						</f:facet>
						<p:rowEditor />
						<p:commandButton image="cancelar" immediate="true"
							action="#{altaFacturaBean.eliminarLinea}" title="Eiminar linea"
							update="@form lineas growl totales footer">
							<f:setPropertyActionListener
								target="#{altaFacturaBean.lineaEliminar}" value="#{linea}" />
						</p:commandButton>

					</p:column>

					<p:columnGroup type="footer" id="footer">

						<p:row>

							<p:column colspan="3" footerText="Totales:"
								style="text-align:right" />

							<p:column
								footerText="#{altaFacturaBean.total.totalConsumidoFormateado}"
								style="text-align:center" />

							<p:column footerText="#{altaFacturaBean.total.puntosAcumulados}"
								style="text-align:center" />

							<p:column
								footerText="#{altaFacturaBean.total.totalIvaFormateado}"
								style="text-align:center" />

							<p:column
								footerText="#{altaFacturaBean.total.totalFacturadoFormateado}"
								style="text-align:center" />

							<p:column style="text-align:center" />

						</p:row>

					</p:columnGroup>

					<f:facet name="footer">
						<p:commandButton image="actualizar" immediate="true"
							action="#{altaFacturaBean.actualizarTotales}"
							title="Actualizar totales" update="footer @form"
							value="Actualizar totales" />
					</f:facet>

				</p:dataTable>

			</p:panel>

			<p:spacer height="10" />

			<h:panelGrid columns="6" cellpadding="4" id="totales"
				styleClass="ui-widget-content" columnClasses="label, value">

				<h:outputText value="IVA aplicado:" styleClass="negrita" />
				<h:outputText value="#{parametrosBean.current.iva}">
					<f:convertNumber type="percent" />
				</h:outputText>

				<h:outputText value="Total factura:" styleClass="negrita" />
				<h:inputText value="#{altaFacturaBean.nuevaFactura.total}"
					converter="javax.faces.Double" id="total" />

				<h:outputText value="Total puntos acumulados:" styleClass="negrita" />
				<h:inputText
					value="#{altaFacturaBean.nuevaFactura.puntosAcumulados}"
					converter="javax.faces.Integer" />

			</h:panelGrid>

			<br />

			<p:commandButton value="Insertar Factura" image="guardar"
				update="@form growl" actionListener="#{altaFacturaBean.insertar}" />

			<p:button value="Volver" image="volver" outcome="facturas" />

		</h:form>

		<!-- formulario para incorporar una nuava linea a la factura -->
		<h:form prependId="false" id="datosAltaLinea">

			<p:dialog header="#{msg['label.datosNuevaLinea']}" width="600"
				height="210" widgetVar="dlgAltaLineaFactura" resizable="true"
				showEffect="clip" hideEffect="clip" modal="true">

				<h:panelGrid columns="2" id="datosAlta" cellpadding="4"
					styleClass="ui-widget-content" columnClasses="label, value">

					<h:outputText value="Importe consumido:" />
					<h:inputText id="importeConsumido" required="true"
						value="#{altaFacturaBean.nuevaLineaFactura.importeConsumido}" />

					<h:outputLabel for="numero" value="#{msg['label.numeroAsociado']}:" />
					<h:selectOneMenu id="numero" converter="lineaTelefonicaConverter"
						value="#{altaFacturaBean.nuevaLineaFactura.lineaTelefonica}">
						<f:selectItems value="#{altaFacturaBean.lineasTelefonicas}"
							itemValue="#{n}"
							itemLabel="#{n.numero} (#{n.extension}) - #{n.titular.presentacion}"
							var="n" />
					</h:selectOneMenu>

				</h:panelGrid>

				<br />

				<p:commandButton image="guardar" value="Insertar linea"
					update="lineas growl datosAltaLinea"
					oncomplete="dlgAltaLineaFactura.hide()"
					actionListener="#{altaFacturaBean.anadirLinea}" />

				<p:commandButton image="volver" value="Volver"
					onclick="dlgAltaLineaFactura.hide()" />

			</p:dialog>

		</h:form>

	</ui:define>

</ui:composition>